/* *****************************************************************
 *
 * Download latest Blinker library here:
 * https://github.com/blinker-iot/blinker-library/archive/master.zip
 * 
 * 
 * Blinker is a cross-hardware, cross-platform solution for the IoT. 
 * It provides APP, device and server support, 
 * and uses public cloud services for data transmission and storage.
 * It can be used in smart home, data monitoring and other fields 
 * to help users build Internet of Things projects better and faster.
 * 
 * Make sure installed 2.5.0 or later ESP8266/Arduino package,
 * if use ESP8266 with Blinker.
 * https://github.com/esp8266/Arduino/releases
 * 
 * Make sure installed 1.0.2 or later ESP32/Arduino package,
 * if use ESP32 with Blinker.
 * https://github.com/espressif/arduino-esp32/releases
 * 
 * Docs: https://doc.blinker.app/
 *       https://github.com/blinker-iot/blinker-doc/wiki
 * 
 * *****************************************************************
 * 
 * Blinker 库下载地址:
 * https://github.com/blinker-iot/blinker-library/archive/master.zip
 * 
 * Blinker 是一套跨硬件、跨平台的物联网解决方案，提供APP端、设备端、
 * 服务器端支持，使用公有云服务进行数据传输存储。可用于智能家居、
 * 数据监测等领域，可以帮助用户更好更快地搭建物联网项目。
 * 
 * 如果使用 ESP8266 接入 Blinker,
 * 请确保安装了 2.5.0 或更新的 ESP8266/Arduino 支持包。
 * https://github.com/esp8266/Arduino/releases
 * 
 * 如果使用 ESP32 接入 Blinker,
 * 请确保安装了 1.0.2 或更新的 ESP32/Arduino 支持包。
 * https://github.com/espressif/arduino-esp32/releases
 * 
 * 文档: https://doc.blinker.app/
 *       https://github.com/blinker-iot/blinker-doc/wiki
 * 
 * *****************************************************************/

#define BLINKER_WIFI

#include <Blinker.h>

char auth[] = "0f0ca44bbd0e";   //修改为自己的设备码
char ssid[] = "WZIOT";          //改成自己的wifi名
char pswd[] = "77778888";   //改成自己的wifi密码

// 新建组件对象
BlinkerButton Button1("btn-abc");//学习按键
BlinkerButton Button2("btn-ibc");//制热23度
BlinkerButton Button3("btn-7ru");//制热24度
BlinkerButton Button4("btn-6pp");//制热25度
BlinkerButton Button5("btn-yi7");//空调开按键
BlinkerButton Button6("btn-k12");//空调关按键



//int temp = 0;  //温度
uint8_t learn_stat = 0;//学习状态，0：非学习，1：学习

void button1_callback(const String & state)//学习按键
{
  if(learn_stat == 0)
  {
    learn_stat = 1;
    Button1.color("#0000FF");
    Button1.text("学习ON");
    Button1.print("on");

    // uint8_t buffer[1];
    // buffer[0] = 0xe4;
    // Serial.write(buffer, 1);
  }
  else if(learn_stat == 1)
  {
    learn_stat = 0;
    Button1.color("#0000FF");
    Button1.text("学习OFF");
    Button1.print("off");
    uint8_t buffer[1];
    buffer[0] = 0xe2;
    Serial.write(buffer, 1);
  }
}
void button2_callback(const String & state)//制热23度
{
  if(learn_stat == 0)
  {
    uint8_t buffer[2];
    buffer[0] = 0xe3;
    buffer[1] = 0x01;
    Serial.write(buffer, 2);
  }
  else if(learn_stat == 1)
  {
    uint8_t buffer[2];
    buffer[0] = 0xe0;
    buffer[1] = 0x01;
    Serial.write(buffer, 2);
  }
}
void button3_callback(const String & state)//制热24度
{
  if(learn_stat == 0)
  {
    uint8_t buffer[2];
    buffer[0] = 0xe3;
    buffer[1] = 0x02;
    Serial.write(buffer, 2);
  }
  else if(learn_stat == 1)
  {
    uint8_t buffer[2];
    buffer[0] = 0xe0;
    buffer[1] = 0x02;
    Serial.write(buffer, 2);
  }
}
void button4_callback(const String & state)//制热25度
{
  if(learn_stat == 0)
  {
    uint8_t buffer[2];
    buffer[0] = 0xe3;
    buffer[1] = 0x03;
    Serial.write(buffer, 2);
  }
  else if(learn_stat == 1)
  {
    uint8_t buffer[2];
    buffer[0] = 0xe0;
    buffer[1] = 0x03;
    Serial.write(buffer, 2);
  }
}
void button5_callback(const String & state)//空调开按键
{
  if(learn_stat == 0)
  {
    uint8_t buffer[2];
    buffer[0] = 0xe3;
    buffer[1] = 0x04;
    Serial.write(buffer, 2);
  }
  else if(learn_stat == 1)
  {
    uint8_t buffer[2];
    buffer[0] = 0xe0;
    buffer[1] = 0x04;
    Serial.write(buffer, 2);
  }
}
void button6_callback(const String & state)//空调关按键
{
  if(learn_stat == 0)
  {
    uint8_t buffer[2];
    buffer[0] = 0xe3;
    buffer[1] = 0x05;
    Serial.write(buffer, 2);
  }
  else if(learn_stat == 1)
  {
    uint8_t buffer[2];
    buffer[0] = 0xe0;
    buffer[1] = 0x05;
    Serial.write(buffer, 2);
  }
}
void setup()
{
    // 初始化串口
    Serial.begin(115200);
    //BLINKER_DEBUG.stream(Serial);
    
    Blinker.begin(auth, ssid, pswd);
    //Blinker.attachData(dataRead);

    Button1.attach(button1_callback);
    Button2.attach(button2_callback);
    Button3.attach(button3_callback);
    Button4.attach(button4_callback);
    Button5.attach(button5_callback);
    Button6.attach(button6_callback);

}

void loop() {
    Blinker.run();
}